package repository

import (
	"organoid_public/domain/sample/model"
	"organoid_public/infrastructure/db/gormclient"
	"organoid_public/pkg/valueobject"
)

type OrganoidListParams struct {
	Keywords      string
	Pagination    *valueobject.Pagination
	Organism      string
	Source        string
	Organoid      string
	CoCulture     string
	CultureMethod string
	Complexity    string
}

type BiomarkerListParams struct {
	Keywords               string
	Pagination             *valueobject.Pagination
	Organism               string
	Source                 string
	Organoid               string
	Period                 string
	BiomarkerClassfication string
	DetectionMethod        string
	CoCulture              string
	DiseaseModeling        string
	DrugTest               string
}

type Search interface {
	OrganoidPageList(param *OrganoidListParams) (*gormclient.PageList[model.SearchProtocalOrganoid], error)
	GetOrganoidSampleId(param *OrganoidListParams) ([]string, error)
	CoCulturePageList(param *OrganoidListParams) (*gormclient.PageList[model.SearchProtocalCoculture], error)
	IdentifyPageList(param *BiomarkerListParams) (*gormclient.PageList[model.SearchBiomarkerIdentified], error)
	PotentialPageList(param *BiomarkerListParams) (*gormclient.PageList[model.SearchBiomarkerPotential], error)
}
